home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib14.dsk
/
SPELLING TUTOR.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
7KB
|
160 lines
10 REM **********************
20 REM * SPELLING TUTOR *
30 REM * BY BILL HEDGES *
40 REM * COPYRIGHT (C) 1983 *
50 REM * BY MICROSPARC, INC *
60 REM * LINCOLN, MA. 01773 *
70 REM **********************
100 REM
110 CLEAR
120 D$ = CHR$(4)
130 PRINT D$;"BLOAD ALPHABET,A$84D0"
140 POKE 232,208: POKE 233,132
150 POKE 115,208: POKE 116,132
160 REM W$ IS THE WORD RANDOMLY CHOSEN FROM WORD LIST.
170 REM W$(21) IS ARRAY OF SPELLING WORDS TYPED IN BY TEACHER.
180 REM W1$=THE WORD BEING SPELLING WITH MORE AND MORE LETTERS REMOVED FROM IT.
190 REM W2$=TEMPORARY STORAGE OF WORD CHOSEN EACH TIME FOR RETRIEVAL.
200 REM TW$=STUDENT ANSWER.
210 REM Z$=CARRIAGE RETURN OR ANY KEY PRESS BY OPERATOR.
220 REM CH=RND NO. OF CHARACTER IN A WORD TO BE REMOVED AS 1ST, 3RD, ETC.
230 REM CN=LETTER OF WORD TO BE DRAWN IN HIRES.
240 REM DO IS REDRAWING OF WORD ONE TIME FOR EACH LETTER WITH ONE LETTER LESS EACH TIME UNTIL SCREEN BLANK
250 REM LE=LENGTH OF LONGEST WORD WHETHER FROM SPELLING LIST OR STUDENT INPUT.
260 REM LE ENABLES DASHES IF STUDENT ANSWER IS LONGER OR SHORTER THAN RIGHT ANSWER.
270 REM X=FRE(0) UUSED TO REMOVE STRING ACCUMULATION FROM STUDENT ANSWERS.
280 REM SE(N) AND SP(N) ARE SWITCHES
290 REM XN AND YN ARE COORDINATES OF EACH LETTER DRAWN
300 REM R IS STUDENT ERROR COUNT.
310 REM WN IS RANDOM NO. GENERATED TO SELECT SPELLING WORD.
320 REM X=FRE(0) GETS RID OF ACCUMULATING STRINGS TO AVOID MEMORY FULL ERROR.
330 LOMEM: 17000
340 PRINT
350 REM LOMEM SET ABOVE GRAPHICS AREA TO AVOID INTERFERENCE WITH HGR
360 X = FRE(0): HOME
370 DIM W$(21): DIM SP(21)
380 VTAB 23: PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": VTAB 2: HTAB 15: PRINT "DIRECTIONS": PRINT
390 PRINT "DEAR TEACHER:": PRINT
400 PRINT "THIS PROGRAM ENABLES U TO TYPE IN": PRINT
410 PRINT "UP TO 20 SPELLING WORDS FOR THE DAY'S": PRINT
420 PRINT "SPELLING PRACTICE."
430 PRINT
440 PRINT : PRINT "THE LAST WORD YOU TYPE IN SHOULD BE": PRINT
450 PRINT "THE WORD 'DONE'."
460 PRINT : PRINT "EACH LESSON IS TEN WORDS."
470 VTAB 20: FLASH : INPUT "PRESS RETURN TO GO ON.";Z$: NORMAL
480 HOME
490 VTAB 5
500 PRINT "READY TO TYPE IN SPELLING LIST?
510 PRINT : INPUT "(Y OR N) ";Z$
520 IF LEFT$(Z$,1) = "Y" THEN 550
530 IF LEFT$(Z$,1) = "N" THEN PRINT : PRINT "THAT'S ALL.": END
540 GOTO 510
550 N = 0
560 N = N +1
570 IF N = 21 THEN PRINT "NO MORE WORDS ALLOWED IN THIS LIST.": PRINT : PRINT "YOU HAVE 20.": GOTO 680
580 HOME : VTAB 5: PRINT "REMEMBER TO TYPE THE WORD 'DONE'
590 PRINT : PRINT "AS THE LAST WORD IN YOUR SPELLING LIST."
600 PRINT : PRINT
610 PRINT : PRINT "TYPE IN WORD ";N;".": PRINT : INPUT "THE WORD IS? ";W$(N)
620 PRINT
630 IF LEN(W$(N)) >10 THEN PRINT "MAXIMUM WORD LENGTH IS TEN LETTERS.": PRINT : PRINT "CHOOSE ANOTHER.": GOTO 610
640 PRINT : IF LEN(W$(N)) < = 1 THEN PRINT "WORDS MUST HAVE AT LEAST ": PRINT : PRINT "TWO LETTERS. TRY ANOTHER.": GOTO 610
650 IF W$(N) = "DONE" THEN 680
660 GOTO 560
670 PRINT
680 PRINT : PRINT "MISTAKES? TYPE WORDS OVER?"
690 PRINT : INPUT "(Y OR N)";Z$
700 IF LEFT$(Z$,1) = "Y" THEN CLEAR : GOTO 550
710 IF LEFT$(Z$,1) = "N" THEN 730
720 GOTO 680
730 HOME : VTAB 5: PRINT "STUDENTS CAN NOW PRACTICE "
740 R = 0
750 PRINT : PRINT "SPELLING THE WORDS."
760 VTAB 21: FLASH : INPUT "PRESS RETURN WHEN READY";Z$: NORMAL : HOME
770 NW = N -1
775 REM NEXT STATEMENT USED AS SWITCH
780 FOR J = 1 TO NW:SP(J) = 1: NEXT J
790 IF NW <10 THEN FOR I = 1 TO NW: GOTO 810
800 FOR I = 1 TO 10
810 WN = INT(NW * RND(1)) +1
820 REM THIS INSURES SAME WORD NOT SELECTED TWICE.
830 IF SP(WN) = 0 THEN 810
840 SP(WN) = 0
850 W$ = W$(WN)
860 W2$ = W$(WN)
870 HGR : HCOLOR= 3: ROT= 0: SCALE= 3
880 XN = 10:YN = 30
890 LT = LEN(W$)
900 REM THIS DESIGNED TO AVOID ELIMINATING SAME LETTER.
910 FOR J = 1 TO LT:SE(J) = 1: NEXT J
920 REM NEXT STATEMENT IS TO EVENTUALLY PUT IN AS MANY BLANKS AS THE WORD HAS LETTERS.
930 FOR DO = 1 TO LT
940 FOR CN = 1 TO LT
950 HOME
960 DRAW ASC( MID$ (W$,CN,1)) -31 AT XN,YN
970 XN = XN +25
980 NEXT CN
990 XN = 10:YN = 60
1000 VTAB 21: INPUT "TYPE THE WORD.";TW$
1010 VTAB 22: IF LEN(TW$) >10 THEN PRINT "YOUR WORD IS TOO LONG. TRY AGAIN.": GOTO 1000
1020 VTAB 22: IF LEN(TW$) < = 1 THEN PRINT "YOUR WORD IS TOO SHORT. TRY AGAIN.": GOTO 1000
1030 FOR CN = 1 TO LEN(TW$)
1040 DRAW ASC( MID$ (TW$,CN,1)) -31 AT XN,YN
1050 XN = XN +25
1060 IF XN >260 THEN PRINT "WORD IS TOO LONG. TRY AGAIN.": GOTO 780
1070 NEXT CN
1080 IF TW$ = W2$ THEN 1240
1090 R = R +1
1100 REM START COMPARING EACH LETTER IN STUDENT ANSWER WITH RIGHT ANSWER 'W2$'.
1110 XN = 10:YN = 90
1120 IF LEN(W$) > = LEN(TW$) THEN LE = LEN(W$): GOTO 1140
1130 LE = LEN(TW$)
1140 FOR CN = 1 TO LE
1150 IF MID$ (TW$,CN,1) = MID$ (W2$,CN,1) THEN DRAW ASC( MID$ (TW$,CN,1)) -31 AT XN,YN: GOTO 1170
1160 DRAW ASC("-") -31 AT XN,YN
1170 XN = XN +25
1180 NEXT CN
1190 VTAB 22
1200 PRINT "WRONG! SEE THE MISSING LETTERS.": PRINT : PRINT
1210 PRINT "EACH DASH IS A MISTAKE.": PRINT
1220 INPUT "RETURN TO GO ON.";Z$
1230 CALL 62450:XN = 10:YN = 30: GOTO 940
1240 REM WE GO ON FROM HERE TO REMOVE BLANKS
1250 PRINT
1260 VTAB 22: PRINT "RIGHT!": INPUT "PRESS RETURN TO GO ON.";Z$
1270 PRINT
1275 REM CH IS RANDOMLY SELECTED LETTER OR CHARACTER TO BE REMOVED FROM THE WORD.
1280 CH = INT(LT * RND(1) +1)
1290 REM AVOIDS REPEATING REMOVAL OF A BLANK ALREADY IN A WORD
1300 IF SE(CH) < >1 THEN 1280
1310 SE(CH) = 0
1320 X$ = " "
1325 REM NEXT STATEMENT INSERTS BLANK
1330 IF CH = 1 THEN W$ = X$ + RIGHT$(W$,LT -1): GOTO 1350
1340 W$ = LEFT$(W$,CH -1) +X$ + MID$ (W$,CH +1)
1350 PRINT
1360 XN = 10:YN = 30
1370 CALL 62450: NEXT DO
1380 PRINT
1390 PRINT "NOW TYPE THE COMPLETE WORD FROM MEMORY.": INPUT TW$
1400 PRINT : PRINT
1410 IF TW$ = W2$ THEN PRINT "YOU NOW KNOW HOW TO SPELL '";TW$;"'.": GOTO 1470
1420 PRINT "SORRY. DID YOU CONCENTRATE?"
1430 INPUT "RETURN TO GO ON.";Z$
1440 PRINT : PRINT
1450 R = R +1: VTAB 24: PRINT "THE WORD WAS '";W2$;"'."
1460 PRINT : INPUT "PRESS RETURN TO TRY IT AGAIN.";Z$: GOTO 1390
1470 INPUT "RETURN TO GO ON.";Z$: NEXT I
1480 PRINT
1490 IF NW <10 THEN PRINT "YOU MADE ";R;" ERRORS ON THE ";NW" WORDS.": GOTO 1510
1500 PRINT "YOU MADE ";R;" ERRORS ON THE TEN WORDS."
1510 PRINT
1520 INPUT "MORE PRACTICE? (Y OR N)";Z$
1530 IF LEFT$(Z$,1) = "Y" THEN TEXT : HOME :X = FRE(0): GOTO 730
1540 IF LEFT$(Z$,1) < >"N" THEN 1520
1550 PRINT
1560 VTAB 22: PRINT FRE(0)
1570 HOME : TEXT : PRINT "THAT'S ALL!": END
1580 PRINT : PRINT : INPUT "RETURN TO GO ON.";Z$
1590 PRINT "YOU MADE ";R;" ERRORS ON THE ";NW;" WORDS."